package com.vcredit.creditcat.persistence;
import java.util.List;

import com.vcredit.creditcat.framework.pagination.DefaultCriteria;
import org.apache.ibatis.annotations.Param;

import com.vcredit.creditcat.model.Role;

/**
 * 角色DAO
 *
 */
public interface RoleMapper{
	
	/**
	 * 新增角色
	 * @param obj 角色对象
	 */
	public void insert(Role obj);
	
	/**
	 * 修改角色
	 * @param obj 角色对象
	 */
	public void update(Role obj);
	
	/**
	 * 删除角色
	 * @param id 角色Id
	 */
	public void delete(Long id);
	
	/**
	 * 根据匹配查询
	 * @param obj 角色对象
	 * @return 角色集合
	 */
	public List<Role> find(Role obj);

	/**
	 * 根据用户Id关联查询所有角色集合
	 * @param userId 用户Id
	 * @return 角色集合
	 */
	public List<Role> findByUserId(Long userId);

	/**
	 * 查询渠道角色
	 * @return
	 */
	List<Role> findChannelRoles();
	
	/**
	 * 根据角色名查询角色集合
	 * @param name 角色名
	 * @return 角色集合
	 */
	public List<Role> findByName(String name);

	/**
	 * 角色名唯一性验证
	 * @param id 角色Id
	 * @param name 角色名
	 * @return
	 */
	public Integer vaildName(@Param("id") Long id, @Param("name") String name);
	/**
	 * 根据资源id查询对应角色
	 * @param resourceId
	 * @return
	 */
	public List<Role> findByResourceId(Long resourceId);
	/**
	 * 查询角色总条数
	 * @param DefaultCriteria
	 * @return
	 */
	Long findByPageCount(DefaultCriteria DefaultCriteria);
	/**
	 * 分页查询角色
	 * @param DefaultCriteria
	 * @return
	 */
	List<Role> findByPage(DefaultCriteria DefaultCriteria);

	/**
	 * 查询所有角色
	 * @return
	 */
	List<Role> findAll();
}
